iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 28
0

備份可以分為兩種,一種是Full Backup,複製當下node所有的資料。另一種是Incremental,只針對Full Backup之後異動的資料做備份。

首先執行nodetool snap來取得Full Backup。可針對需要備份的Keyspace來做備份,也可以備份全部的Keyspace。
備份的資料會存在ScyllaDB安裝路徑底下,如預設路徑/var/lib/scylla/data,然後/某keyspace/某table-UUID/snapshots/snaphost_name
例如製作Keyspace vangogh的snapshot。
https://ithelp.ithome.com.tw/upload/images/20200909/20113220Aaj2xxty64.png

Incremental Backup預設是disable,必須先到Scylla.yaml中將incremental backups設定為true,然後重啟Scylla。
https://ithelp.ithome.com.tw/upload/images/20200909/2011322034yrQTBJSY.png
Incremental Backup的儲存路徑會在/某keyspace/某table-UUID/backups/backups_name。
首先寫入一筆資料到painting裡,然後去上述路徑發現新增了backups的資料夾。
https://ithelp.ithome.com.tw/upload/images/20200909/201132202kEMpT2l09.png
https://ithelp.ithome.com.tw/upload/images/20200909/20113220RRFU0uSjpv.png
接著再來實作還原的部分。首先確認現在painting有一筆資料,然後有這個狀態下snapshot的檔案。
https://ithelp.ithome.com.tw/upload/images/20200909/20113220mwK9oVUBxa.png
https://ithelp.ithome.com.tw/upload/images/20200909/20113220pLOfkSRPbm.png

還原之前,如果table有保留舊資料,必須要先將原本的table truncate。
如果是在新的機器上做還原,則要確定Keyspace已經先創建。
https://ithelp.ithome.com.tw/upload/images/20200909/20113220ea4Al3BLU3.png

在可以確認不會有新的資料寫入的情況下,可執行nodetool flush,將memtable的資料全部flush到SSTable。
不過一般來說,單一node故障不應該影響資料寫入,這個時候要使用nodetool drain,一樣將資料flush到SSTable,然後停止與client和其他node的連線。

nodetool drain

然後刪除commitlog裡的資料,避免有新的寫入行為覆蓋還原的資料。

rm -rf /var/lib/scylla/commitlog/*

將這個Vangogh底下painting-UUID內的資料刪除,只保留資料夾,會包括我們剛才創立的snapshots。

rm -f /var/lib/scylla/data/vangogh/painting-2e1ee1e0f27611ea8b1c000000000001/*

https://ithelp.ithome.com.tw/upload/images/20200909/20113220uyfvRgb4xo.png
把snapshot內的資料複製到 /painting-UUID底下。
https://ithelp.ithome.com.tw/upload/images/20200909/20113220nLWUdw0m3f.png
確認檔案的owner跟group。

chown -R scylla:scylla *

重啟scylla再查詢一次,資料已經還原回來了。
https://ithelp.ithome.com.tw/upload/images/20200909/20113220WEkb1WO238.png

最後執行nodetool repair,同步這期間寫入的資料。


上一篇
Day27 實作-新增與刪除node
下一篇
Day29 新版功能介紹 - CDC
系列文
ScyllaDB實作紀錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言